
import { cookie } from "./tool.js";
class Cartlist{
    constructor(){
        // 获取渲染的入口
        this.main = $(".list_main")
        // 获取全选按钮
        this.allbut=$(".allcheck");
    }
    init(){
        let obj ={};
        let itemList ={};
        if(cookie.get("cookieUsername")){
            obj = JSON.parse(cookie.get("cookieUsername"));
        }
        if(cookie.get(obj.usernam+"list")){
            itemList = JSON.parse(cookie.get(obj.usernam+"list"));
        }
        console.log(itemList);
        
        let _this = this;
        let carStr = "";
        // 渲染购物车列表
       
            $.ajax({
                type:"post",
                url:"http://localhost:3000/list/cartlist",
                dataType:"json",
            }).then(function(data){
                carStr = "";
                $.each(itemList,function(index,value){
                    $.each(data,function(key,val){
                        if(index.substring(4)==val._id){
                        carStr+=`<div class="car_body" sid=${val._id}>
                                <div class="item_list item_body">
                                <input type="checkbox" class="checkbox" name="item" id="" checked />
                                <a href="">
                                <img
                                    src="${val.image}"
                                    alt=""
                                /></a>
                            </div>
                            <div class="item_list item_body">
                            ${val.name.substring(0,40)}
                            </div>
                            <div class="item_list item_body">
                                <span class="old_price">¥${(+val.pPrice).toFixed(2)}</span><strong class="price">¥${(+val.pPrice).toFixed(2)}</strong
                                ><i>比加入时新增以旧换新服务 </i>
                            </div>
                            <div class="item_list item_body">0</div>
                            <div class="item_list item_body">
                                <input type="button" value="-" id="clear"/><input
                                type="text"
                                value="${value}"id="text"
                                /><input type="button" value="+" id="add"/>
                            </div>
                            <div class="item_list item_body"><strong class="sum_price">¥${(+val.pPrice*value).toFixed(2)}</strong></div>
                            <div class="item_list item_body">
                                <a href="javascript:;"> 移入收藏夹</a><a href="javascript:;" class="remove_line"> 删除</a><a href="javascript:;"> 修改</a>
                            </div>
                    </div>`
                        }
                    })
                
                })
              _this.main.html(carStr);
              sum_num()
              _this.allbut.click()
            })
        
        // 渲染结束
        

        // 加减号事件委托
        _this.main.on("click","#add",function(){
            let number = parseInt($(this).parent().find("#text").val())+1;
            if(number>999){
                number=999
            }
            $(this).parent().find("#text").val(number)
            chenage($(this).parent().find('#text'));
        })
        // 减号事件委托
        _this.main.on("click","#clear",function(){
            let number = parseInt($(this).parent().find("#text").val())-1;
            if(number<1){
                number=1
            }
            $(this).parent().find("#text").val(number)
            chenage($(this).parent().find('#text'));
        })
        // 输入框事件委托
        _this.main.on("input","#text",function(){
            let reg = /[\D]/;
            let number = parseInt($(this).parent().find("#text").val().replace(reg,""));
            if(number>999){
                number=999
            }
            if(number<1){
                number=1
            }
            $(this).parent().find("#text").val(number)
            chenage($(this).parent().find('#text'));
        })
        // 输入框的数据判断如果为1则左边按钮设为不可选状态，右边为999则右边设为不可用状态
        function chenage(_this){
            if(_this.val()==1){
                _this.parent().find("#clear").css({
                    color:"#ccc",
                    cursor:"no-drop"
                })
            }else{
                _this.parent().find("#clear").css({
                    color:"#000",
                    cursor:"pointer"
                })
            }

            if(_this.val()==999){
                _this.parent().find("#add").css({
                    color:"#ccc",
                    cursor:"no-drop"
                })
            }else{
                _this.parent().find("#add").css({
                    color:"#000",
                    cursor:"pointer"
                })
            }
            chenageNum(_this);
            chenageSumP()
            sum_num()
        }

        // 单行删除按钮事件委托
        _this.main.on("click",".remove_line",function(){
            itemList = JSON.parse(cookie.get(obj.usernam+"list"));
            let newObj = {};
            let sid = $(this).parent().parent().attr("sid");
            console.log(sid,itemList)
            if(confirm("确认是否删除！！！")){
                $(this).parent().parent().remove()
                $.each(itemList,function(index,value){
                    console.log(index)
                    console.log(index.substring(4)!=sid);
                    if(index.substring(4)!=sid){
                        console.log(index.substring(4)!=sid)
                        newObj[index] = value;
                    }
                })
                cookie.set(obj.usernam+"list",JSON.stringify(newObj),10);
            }
            chenageSumP()
            sum_num()
            car_but_check()
        })

        // 修改已存在的商品cookie数量的函数封装--
        function chenageNum(_this){
            let farth = _this.parent().parent();
            let sid = "item"+farth.attr("sid");
            itemList[sid] = _this.val();
            cookie.set(obj.usernam+"list",JSON.stringify(itemList),10);
            farth.find(".sum_price").html("￥"+(parseFloat(farth.find(".price").html().substring(1))*parseInt(_this.val())).toFixed(2))
        }

        // 全选按钮的事件委托
        _this.allbut.on("click",function(){
            _this.main.find(".checkbox").prop("checked",$(this).prop("checked"));
            _this.allbut.prop("checked",$(this).prop("checked"));
            chenageSumP()
        })

        // 单行按钮触发全选的事件委托
        _this.main.on("click",".checkbox",function(){
            if(_this.main.find(".checkbox:checked").length===_this.main.find(".checkbox").length){
                _this.allbut.prop("checked",true);
            }else{
                _this.allbut.prop("checked",false);
            }
            chenageSumP()
        })

        // 选中的数量和选中的商品的价格总和函数封装
        function chenageSumP(){
            let all_checked = _this.main.find(".checkbox:checked");
            let sum = 0;
            let price_all = 0;
            all_checked.each(function(index,dom){
                sum += +$(dom).parent().parent().find("#text").val();
                price_all += +$(dom).parent().parent().find(".sum_price").html().substring(1);
            })
            $(".all_sum_num").html(sum);
            $(".all_sum_price").html("￥"+price_all.toFixed(2))

        }

        // 加加减减改变的数量总和排除是否选中
        function sum_num(){
            let num = 0;
            _this.main.find(".car_body").each(function(index,dom){
                num += +$(dom).find("#text").val()
            })
            $(".all_data").html(num);
        }
        
        // 删除选中的商品列表
        $(".remove_checked").on("click",function(){
            itemList = JSON.parse(cookie.get(obj.usernam+"list"));
            let all_checked = _this.main.find(".checkbox:checked").parent().parent();
            let newObj = {};
            if(confirm("确认是否删除！！！")){
                all_checked.each(function(index,dom){
                    $(dom).remove()
                    let sid = $(dom).attr("sid");
                    $.each(itemList,function(index,value){
                        if(index.substring(4)!=sid){
                            newObj[index] = value;
                        }
                    })
                })
                cookie.set(obj.usernam+"list",JSON.stringify(newObj),10);
            }

            sum_num()
            chenageSumP()
            car_but_check()
        })

        // 更新购物车数量
        function car_but_check(){
            let cookielist = {};
            if(cookie.get(obj.usernam+"list")){
            cookielist = JSON.parse(cookie.get(obj.usernam+"list"));
            }
            let index =0;
            $.each(cookielist,function(i,v){
                index++;
            })
            $(".mycar i").html(index)
        }
    }


}
export{
    Cartlist
}